package com.softer.wxzj.mapper;

import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.entity.SysOperator;
import com.softer.wxzj.entity.SysRole;
import com.softer.wxzj.mapper.base.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * RoleMapper class
 *
 * @author zcz
 * @date 2019/1/16
 */
@Repository
public interface SysOperatorMapper extends BaseMapper<SysOperator> {
    /**
     * 查询当前最大登录账号
     *
     * @return
     */
    String getMaxOperNo();

    /**
     * 查询区域编码
     *
     * @param opesNo 登录账号
     * @return
     */
    String getZoneCode(String opesNo);

    /**
     * 开启或关闭用户
     *
     * @param sysOperator 变更实体
     * @return 操作结果
     */
    int operate(SysOperator sysOperator);

    /**
     * 根据用户名查询用户密码盐值
     *
     * @param operNo
     * @return
     */
    SysOperator getSysOperByOperNo(String operNo);

    /**
     * 根据用户名查询用户和角色信息
     *
     * @param operNo
     * @return
     */
    Map<String, String> getOperAndRoleByOperNo(String operNo);

    /**
     * 模糊查询
     */
    List<SysOperator> fuzzySearch(@Param("fuzzy") String fuzzy, @Param("code") String code);

    SysOperator selectName(String operNo);

    String selectAllName(String operNo);

    /**
     * 根据账号查询角色码
     *
     * @param operNo
     * @return
     */
    String getRoleCodeByOperNo(String operNo);

    /**
     * 查询这个类型的账号最大值
     *
     * @param type
     * @return
     */
    String selectMaxOperNo(String type);

    /**
     * 通过公司查询账号
     *
     * @param id
     * @return
     */
    List<SysOperator> selectByPwdAndCompany(@Param("id") String id);

    /**
     * 根据企业id查询企业外网用户列表
     *
     * @return
     */
    List<SysOperator> getOutUserListByCompanyId(SysOperator sysOperator);

    List<SysOperator> getOperNoListByCompanyId(SysOperator sysOperator);

    /**
     * 修改外网用户信息
     *
     * @param sysOperator
     * @return
     */
    int updateOutOper(SysOperator sysOperator);

    /**
     * 根据账号查询用户信息
     *
     * @param operNo
     * @return
     */
    SysOperator getOperInfoByOperNo(String operNo);

    List<SysOperator> getUsbKeyIsBind(String usbKey);

    int setUsbKeyIsEmpty(String usbKey);

    /**
     * 查询企业主账号
     *
     * @param companyId 企业ID
     * @return 主账号
     */
    String getMainOperatorByCompanyId(String companyId);

    /**
     * 内网查询管辖区域内机构主账号列表
     *
     * @return
     */
    List<SysOperator> getOrgMainAccount(SysOperator sysOperator);

    int openOrCloseAccount(SysOperator sysOperator);

    /**
     * 物业企业
     *
     * @param sysOperator
     * @return
     */
    List<SysOperator> getOutUserListByOwnerCommit(SysOperator sysOperator);

    /**
     * 绑定/解绑加密狗
     *
     * @param sysOperator
     * @return
     */
    int bindUsbKey(SysOperator sysOperator);

    /**
     * 根据子账号，查询主账号
     * @param operNo 子账号
     * @return 主账号
     */
    String getMainOperatorByChildOper(String operNo);
}
